package Funcionalidades.ABMCompetencia;

import java.awt.ComponentOrientation;
import java.awt.Dimension;
import java.util.List;
import java.util.Vector;

import javax.swing.BoxLayout;
import javax.swing.JPanel;
import javax.swing.JTable;

import Funcionalidades.Menues.FrameUsuarioAutenticado;
import Funcionalidades.Menues.MyTableModel;
import Funcionalidades.Menues.PanelGeneral;
import Funcionalidades.Menues.iDialogGeneral;
import Gestores.GestorParticipante;
import Gestores.GestorUsuario;
import Entidades.EntidadesDTO.CompetenciaDTO;
import Entidades.EntidadesLogica.*;
import ActionListeners.*;


import javax.swing.JScrollPane;
import javax.swing.border.TitledBorder;
import javax.swing.JButton;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.Box;





public class listarParticipantes extends PanelGeneral {

	private static final long serialVersionUID = 1L;
	
	private JTable tableParticipantes;
	private Participante nuevo;
	private GestorUsuario gestUser;
	private GestorParticipante gestPart;
	private final Competencia competencia;
	
	public listarParticipantes(FrameUsuarioAutenticado framePerteneciente, final Competencia competencia) {
		
		super(framePerteneciente);
		setParticipantesCompetencia(new Vector<Participante>());
		this.competencia=competencia;
		setPreferredSize(new Dimension(800, 500));
		setAlignmentY(1.0f);
		setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
		
		setNombreCU("Participantes de la Compentecia");
		JPanel panelGeneral = new JPanel();
		panelGeneral.setOpaque(false);
		add(panelGeneral);
		panelGeneral.setLayout(new BoxLayout(panelGeneral, BoxLayout.Y_AXIS));
		
		Component glue = Box.createGlue();
		panelGeneral.add(glue);
		
		
		JPanel panelResultados = new JPanel();
		panelResultados.setOpaque(false);
		panelGeneral.add(panelResultados);
		panelResultados.setLayout(new BoxLayout(panelResultados, BoxLayout.Y_AXIS));
		
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setBorder(new TitledBorder(null, "Lista de Participantes", TitledBorder.LEADING, TitledBorder.TOP, null, null));
		panelResultados.add(scrollPane);
		scrollPane.setMaximumSize(new Dimension(500,500));
		scrollPane.setPreferredSize(new Dimension(300,300));
		

		
		tableParticipantes = new JTable();
		tableParticipantes.setModel(new ParticipantesTableModel(this.competencia));
		tableParticipantes.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
		scrollPane.setViewportView(tableParticipantes);
		tableParticipantes.setRowSelectionAllowed(true);
		tableParticipantes.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
		
		JPanel panelExtends = new JPanel();
		panelExtends.setOpaque(false);
		panelGeneral.add(panelExtends);
		panelExtends.setMaximumSize(panelLabel);
		
		JButton btnAgregar = new JButton("Agregar");
		panelExtends.add(btnAgregar);
		btnAgregar.setPreferredSize(datos);
		btnAgregar.addActionListener(
				new ActionListener() {

				public void actionPerformed(ActionEvent arg0) {
					altaParticipante inuevo=new altaParticipante(getFramePerteneciente(),null,false, competencia);
					((iDialogGeneral) inuevo).activarDG();
					
					nuevo= inuevo.getNuevo();
					try{
						getParticipantesCompetencia(competencia).add(nuevo);
					}
					catch (Throwable e) {
						System.out.println(e.getMessage());
					}
					try {
						tableParticipantes.setModel(new ParticipantesTableModel(competencia));
					} catch (Throwable e) {
						System.out.println(e.getMessage());
					}
					
					
				}
			});
		
		Component horizontalStrut = Box.createHorizontalStrut(20);
		panelExtends.add(horizontalStrut);
		
		JButton btnModificar = new JButton("Modificar");
		panelExtends.add(btnModificar);
		btnModificar.setPreferredSize(datos);
		
		Component horizontalStrut_1 = Box.createHorizontalStrut(20);
		panelExtends.add(horizontalStrut_1);
		
		JButton btnEliminar = new JButton("Eliminar");
		panelExtends.add(btnEliminar);
		btnEliminar.setPreferredSize(datos);
		btnEliminar.addActionListener(new FuncionalidadNoImplementada());
		
		Component verticalStrut = Box.createVerticalStrut(20);
		panelGeneral.add(verticalStrut);
		
		JPanel panelBotones = new JPanel();
		panelBotones.setOpaque(false);
		panelGeneral.add(panelBotones);
		
		JButton btnAtras = new JButton("Atras");
		panelBotones.add(btnAtras);
		btnAtras.setPreferredSize(datos);
		btnAtras.addActionListener(new AtrasAction(getFramePerteneciente()));
		
		Component glue_1 = Box.createGlue();
		panelGeneral.add(glue_1);


		

	}

	private Vector<Participante> getParticipantesCompetencia(Competencia competencia) throws Throwable {
		CompetenciaDTO competenciaDTO=new CompetenciaDTO(competencia.getNombreCompetencia(),competencia.getDeporteAsociado(),competencia.getEstado(), null,gestUser.getUsuarioLogueado());
		Vector<Participante> lista_participante;
		lista_participante=gestPart.obtenerParticipantes(competenciaDTO);
						
		return lista_participante;
	}

	private void setParticipantesCompetencia(
			Vector<Participante> participantesCompetencia) {
	}

	
	

		class ParticipantesTableModel extends MyTableModel{
			private static final long serialVersionUID = 1L;

			public ParticipantesTableModel(Competencia c){
				super();
				Vector<Participante> participantes=new Vector<Participante>();
				try {
					participantes = c.getParticipantes();
					String[] columnas={"NOMBRE","CORREO ELECTRONICO"};
					setColumnNames(columnas);
					Object[][] info= new Object[participantes.size()][2];
					setColumnNames(columnas);
					
					if(participantes.size()>0){
						for(int i=0;i<participantes.size();i++){
							info[i][0]=participantes.get(i).getDatosActuales().getNombre();
							info[i][1]=participantes.get(i).getDatosActuales().getCorreoElectronico();
						}
						}
					setInfo(info);
					boolean[] edits= {false,false};
					setEdits(edits);
					
					
					
				
				} catch (Throwable e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}


				
			}
		}
	

}
